<?php
/*
	This file is part of Core. Copyright © 2007, Emanuele Vulcano.

	Core is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	Core is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Core; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
	
*/

class CDynamic extends CObject {
	function __get($name) {
		$exists = $this->_GetProperty($name, $ret);
		if (!$exists) {
			trigger_error("Dynamic property does not exist: $name", E_USER_ERROR);
			return null;
		} else
			return $ret;
	}
	
	function __set($name, $val) {
		$exists = $this->_SetProperty($name, $val);
		if (!$exists)
			trigger_error("Dynamic property does not exist: $name", E_USER_ERROR);
	}
	
	function __call($name, $args) {
		$exists = $this->_CallMethod($name, $args, $ret);
		if (!$exists) {
			trigger_error("Dynamic property does not exist: $name", E_USER_ERROR);
			return null;
		} else
			return $ret;
	}
	
	function _GetProperty(/* string */ $name, &$value) /* : boolean */  {
		return false;
	}
	
	function _SetProperty(/* string */ $name, &$value) /* : boolean */  {
		return false;
	}
	
	function _CallMethod(/* string */ $name, /* array */ $args, &$return) /* : boolean */ {
		return false;
	}
	
	function Register($class) { /* no action on PHP 5 */}
}

?>